/*
 * 这些东东是放在header里面的哦。。。
 * 因JS文件是加到头文件里面的，它运行时节点还没有生成，即html文档还没有加载进来。对节点的事件绑定是无从谈起的。
	
	因此，要特意指明，所有html文档加载完之后再进行节点的事件绑定。即所有的节点绑定都要写在$(document).ready()函数里。

	<?php $this->load->view('inc/header');?>,所有加载了头文件的页面都会执行$(document).ready()函数
	
	这里的东西是公用的。即只要节点名（也是类名）相同，节点的事件绑定就有效。
 * 
 */

$(function(){		//$(document).ready(function(){});
	ajaxinit();		
	//触发全选按钮。在弹出页面中不太可能会用到这个节点，因此写在这里。
	$('.ckb-a').click(function(){
		//寻父节点
		$tbl = $(this).parents('.tbl-list');
		//'checked'是复选框的固有属性。
		if(typeof $(this).attr('checked') != 'undefined'){
			//找子节点
			$tbl.find('.ckb-s').attr('checked','checked');
			
		}else{
			$tbl.find('.ckb-s').removeAttr('checked');
		}
		
	});
	
	//给节点加样式：找到偶数行，添加odd类。
	$('.tbl-list').find('tr:odd').addClass('odd');
	

});
//所有额外加载的文档，如弹出的提交表单，有可能需要的事件绑定行为写在这里。为了能够重复使用，便于修改控制。
function ajaxinit(){
	
	$('.wm-ajax').unbind('click');				//先解除绑定，再绑定。如此可防止重复绑定
	$('.wm-ajax').click(function(){
		var url = $(this).attr('href');
		var w = $(this).attr('wmw');
		var h = $(this).attr('wmh');
		var title = $(this).attr('wmtitle');
		
		var html = '';
		
		$.ajax({
			   type: "GET",
			   url: url,
			   dataType:'html',
			   async:false,
			   success: function(msg){
				   html = msg;
			   }   
		});		
		
		asyncbox.open({
			html:html,
		　　	width:w,
		　　	height:h,
		   	modal:true,
		   	title:title
		});		
		
		return false;		//为什么要返回假呢？
	});

	//用ajax方式进行表单提交。得到json数据，并根据这个数据决定是刷新还是。。。
	$('.btn-ajax-submit').unbind('click');
	$('.btn-ajax-submit').click(function(){
		
		var $frm = $('#'+$(this).attr('frmid'));	//找到form节点
		//判断表单是否有 submitbefor 这个属性。有的话
		var submitbefor = $frm.attr('submitbefor');
		if(typeof submitbefor != 'undefined'){
			//那就执行它的函数。
			var flag = window[submitbefor]($frm);
			if(!flag){
				return;
			}
		}
		//判断form表单是否有 isvalidata 属性，并且值为 true。
		var isvalidata = $frm.attr('isvalidata');
		if(typeof isvalidata != 'undefined' && isvalidata == 'true'){
			//则在此表单上系上数据验证机器。
			$frm.validationEngine('attach'); 
			//验证都通过了吗？？如果没有通过，就停。
			if(!$frm.validationEngine('validate')) return; 			
		}
		
		
		var url = $frm.attr('action');
		//ajax提交
		$.ajax({
			   type: "POST",
			   url: url,			   
			   data:$frm.serialize(),		//序列化表单数据，形如：id=?&title=?
			   dataType:'json',				//希望返回的数据格式，把返回的json格式字符串变成json对象，方便使用。
			   async:false,
			   success: function(msg){				   	
				   	ajax_back(msg);			//处理从申请的服务器端返回的数据。				   
			   }   		
		});				
	});
	
	$('.btn-ajax').unbind('click');
	$('.btn-ajax').click(function(){
		var $elt = $(this);
		
		var url = $elt.attr('href');
		
		$.ajax({
			   type: "GET",
			   url: url,
			   dataType:'json',
			   async:false,
			   success: function(msg){
				   ajax_back(msg);
			   }   
		});		
		
		return false;
		
	});
	
	//ajax方式删除。
	$('.btn-ajax-confirm').unbind('click');
	$('.btn-ajax-confirm').click(function(){
		
		var $elt = $(this);
		
		var msg = $elt.attr('msg');
		
		//提示：你怎么没有选择要删除什么。
		var befordo = $elt.attr('befordo');
		if(typeof befordo != 'undefined'){
			var flag = window[befordo]($elt);	//这是个个性化的东西。其函数写在所在的html页面。
			
			if(!flag){
				return false;		//return表示返回函数调用处，此处则表示函数再不往下执行。
			}
		}
		
		//如果点击 取消。。。停下
		if(!confirm(msg)) return false;
		
		//既然确定了，那ajax就发送请求了。
		var url = $elt.attr('href');
		$.ajax({
			   type: "GET",
			   url: url,
			   dataType:'json',
			   async:false,
			   success: function(msg){
				   
				   ajax_back(msg);		//根据返回的数据，做件事情：刷新页面。
			   }   
		});		
		
		return false;
		
	});
	
}
//js函数则不需要html文档加载完之后再运行。不需要写在$(document).ready()函数里。
//根据ajax的返回数据，做出相应处理。
function ajax_back(msg){
	if(msg.href.length != 0){
		if(msg.href == 'reload'){
			window.location.reload();		//href如果返回了'reload'，那就刷新页面 		
		}else if(msg.href == 'back'){
			window.history.go(-1);			//href如果返回了'back'，那就后退一页
		}else{
			window.location.href = msg.href;	//href既然指定了地方，那就到那里去。 
		}
	}
	
	
	if(String(msg.msg).length > 0){					//如果返回了什么消息，那就弹出来
		alert(msg.msg);
	}
}

//移除元素或称节点或称对象。
function remove_item(elt){
	var $elt = $(elt);		//把普通js节点，变成jquery节点，即可用jquery操作的对象。
	var $album_item = $elt.parents('.album-item');		//找到父节点。
	$album_item.slideUp();			//想要滑动效果。
	setTimeout(function(){			//半秒内，节点移除。
		$album_item.remove();
	},500);
}